System architecture can describe the organization and structure of a computer system. In complex computer systems, an architectural description can help identify and plan system components, sub-systems, and the corresponding communication and interaction of the components. The architecture of a computer system can influence and govern the design and functionality of the system.
Given the ever-changing dynamics of businesses, computer system architectures should be highly maintainable, evolvable, portable, and interoperable. In addition, system users often require computer systems that can be personalized, updated, and that can coexist and cooperate with other computer systems. These requirements often add to the complexity of a computer system.
In an effort to reduce system complexity, rules-based processing architectures were developed. Rules-based processing architectures attempt to separate business rules from business rule application. Traditional rules-based processing architectures include a computer application and a separate rules engine. The business rule application performs the actual processing work and uses the rules engine to control how the work should be processed. The rules engine provides facilities to determine when particular processing should occur, specific processing the application should perform, and which rule should be applied next, if any. The application then carries out the processing indicated by the rules engine.